package com.hsj.service;

import com.hsj.UserService;
import org.apache.dubbo.common.stream.StreamObserver;
import org.apache.dubbo.config.annotation.DubboService;

@DubboService
public class UserServiceImpl implements UserService {

    public String getUser(){
        //业务处理
        return "hsj   v1.0";  //只能返回一次，没法返回多次
    }



    /**
     *   Server_Stream   接口提供者 可以多次响应 给 接口调用者
     * @param name
     * @param response
     */
    @Override
    public void sayHelloServerStream(String name, StreamObserver<String> response) {
        // 业务处理
        response.onNext("第一次响应：  hello1:"+name);  //第一次响应
        //业务处理
        response.onNext("第二次响应：  hello2:"+name);   //第二次响应
        //....

        response.onCompleted(); //告诉服务消费者本次请求真正响应完毕
    }

    /**
     *  接口的 提供方  和  调用方   可以相互之间 多次传递数据
     * @param response
     * @return
     */

    @Override
    public StreamObserver<String> sayHelloStream(StreamObserver<String> response) {

        return new StreamObserver<String>() {
            @Override
            public void onNext(String data) {
                System.out.println(" 接口提供者  接收到的  接口调用者 的 数据"+data);
                // 处理 data 逻辑
                response.onNext("响应结果"+data);
            }

            @Override
            public void onError(Throwable throwable) {

            }

            @Override
            public void onCompleted() {
                System.out.println("收到 接口调用者 发送完成的 标志");
            }
        };
    }
}
